home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / newmat.exe / PRECISIO.HXX < prev   
Text File  |  1991-07-21  |  3KB  |  85 lines

  1. //$$ precisio.hxx                          floating point constants
  2.  
  3. #ifndef PRECISION_LIB
  4. #define PRECISION_LIB 0
  5.  
  6. #define USING_DOUBLE                // adjust to precision being used
  7. //#define USING_FLOAT
  8.  
  9. extern "C"
  10. {
  11. #include <float.h>
  12. }
  13.  
  14.  
  15. #ifdef USING_FLOAT
  16. #undef USING_FLOAT
  17.  
  18. typedef float real;
  19.  
  20. class FloatingPointPrecision
  21. {
  22. public:
  23.    static int Dig()
  24.       { return FLT_DIG; }        // number of decimal digits or precision
  25.    static real Epsilon()
  26.       { return FLT_EPSILON; }    // smallest number such that 1+Eps!=Eps
  27.    static int Mantissa()
  28.       { return FLT_MANT_DIG; }   // bits in mantisa
  29.    static real Maximum()
  30.       { return FLT_MAX; }        // maximum value
  31.    static int MaximumDecimalExponent()
  32.       { return FLT_MAX_10_EXP; } // maximum decimal exponent
  33.    static int MaximumExponent()
  34.       { return FLT_MAX_EXP; }    // maximum binary exponent
  35.    static real Minimum()
  36.       { return FLT_MIN; }        // minimum positive value
  37.    static int MinimumDecimalExponent()
  38.       { return FLT_MIN_10_EXP; } // minimum decimal exponent
  39.    static int MinimumExponent()
  40.       { return FLT_MIN_EXP; }    // minimum binary exponent
  41.    static int Radix()
  42.       { return FLT_RADIX; }      // exponent radix
  43.    static int Rounds()
  44.       { return FLT_ROUNDS; }     // addition rounding (1 = does round)
  45. }
  46.  
  47. #endif
  48.  
  49.  
  50. #ifdef USING_DOUBLE
  51. #undef USING_DOUBLE
  52.  
  53. typedef double real;
  54.  
  55. class FloatingPointPrecision
  56. {
  57. public:
  58.    static int Dig()
  59.       { return DBL_DIG; }        // number of decimal digits or precision
  60.    static real Epsilon()
  61.       { return DBL_EPSILON; }    // smallest number such that 1+Eps!=Eps
  62.    static int Mantissa()
  63.       { return DBL_MANT_DIG; }   // bits in mantisa
  64.    static real Maximum()
  65.       { return DBL_MAX; }        // maximum value
  66.    static int MaximumDecimalExponent()
  67.       { return DBL_MAX_10_EXP; } // maximum decimal exponent
  68.    static int MaximumExponent()
  69.       { return DBL_MAX_EXP; }    // maximum binary exponent
  70.    static real Minimum()
  71.       { return DBL_MIN; }        // minimum positive value
  72.    static int MinimumDecimalExponent()
  73.       { return DBL_MIN_10_EXP; } // minimum decimal exponent
  74.    static int MinimumExponent()
  75.       { return DBL_MIN_EXP; }    // minimum binary exponent
  76.    static int Radix()
  77.       { return FLT_RADIX; }      // exponent radix
  78.    static int Rounds()
  79.       { return FLT_ROUNDS; }     // addition rounding (1 = does round)
  80. };
  81.  
  82. #endif
  83.  
  84. #endif
  85.